package com.hj.web.demo.controller;


import org.springframework.http.converter.json.MappingJacksonValue;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;

@RestController
public class MyController {

    /**
     * 跨域请求方式1 jsonp
     * 前端发送ajax请求时需指定 以下参数：
     * dataType:"jsonp",
     * jsonpCallback:"show",回调函数，如果不指定会随机生成，没什么用
     * jsonp:"callback",指定回调函数的字符串，默认callback
     * 相当于前端发送的请求是
     * http://localhost:8080/hello?callback=show（如果没指定则是jQuery33105458443827347244_1705917616312&_=170591761）
     * 后端controller需要接受参数callback
     * 只适用于get方法
     * @param callback
     * @return
     */
    @RequestMapping("/hello")
    public String hello(@RequestParam(value = "callback",required = false) String callback){
        String str = "\"hello world!\"";
        return callback+"("+str+")";
    }


    /**
     * 跨域请求方式2 方法上加 @CrossOrigin，可以指定哪些域可以访问
     * @return
     */
    @CrossOrigin
    @RequestMapping("/hello2")
    public String hello2(){
        String str = "hello world2!";
        return str;
    }


    @RequestMapping("/hello3")
    public String hello3(){
        String str = "hello world3!";
        return str;
    }


    /**
     * 跨域请求方式3 response 设置响应头允许跨域
     * response.setHeader("Access-Control-Allow-Origin","*");
     * @param response
     * @return
     */
    @RequestMapping("/hello4")
    public String hello4(HttpServletResponse response){
        response.setHeader("Access-Control-Allow-Origin","*");
        String str = "hello world4!";
        return str;
    }
}
